<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 一、创建一个可控对象  ： defineProperties
        // defineProperties 修改对象多个属性 ；
        // var value = "张三";
        // var obj = Object.defineProperties({},{
        //     myname:{
        //         get:function(){
        //             console.log("get执行了");
        //             return value;
        //         },
        //         set:function(newvalue){
        //             console.log("修改的值",newvalue);
        //             value = newvalue;  // 手动更改值；
        //         },
        //         configurable:true,
        //         enumerable:true
        //     },
        //     age:{
        //         get:function(){
        //             console.log("get执行了");
        //             return 20;
        //         },
        //         set:function(newvalue){
        //             console.log("修改的值",newvalue);
        //         },
        //         configurable:true,
        //         enumerable:true
        //     }
        // })

        // console.log(obj);


        // 二 、defineProperty: 修改或者创建一个对象的属性；
        // 1.创建一个可控对象,只能控制一个属性
        
        // var obj = Object.defineProperty({},"myname",{
        //     get:function(){
        //         console.log("get执行了");
        //         return "张三";
        //     },
        //     set:function(newvalue){
        //         console.log("新值",newvalue);
        //     },
        //     configurable:true,
        //     enumerable:true
        // })
        // console.log(obj);

        // 2. 把一个对象修改成一个可控值对象；
        var obj = {
            myname:"张三"
        }
        // console.log(obj);
        var value = obj['myname'];
        Object.defineProperty(obj,"myname",{
            configurable:true,
            enumerable:true,
            get:function(){
                // console.log(111);
                return value;
                // return obj['myname'];
            },
            set:function(newvalue){
                console.log("设置了",newvalue);
                // obj.myname = newvalue;
                value = newvalue;
            }
        })
        // console.log(obj);
        obj.myname;
        obj.myname = "李四";
        console.log(obj);



    </script>
</body>
</html>